Type systems are a widespread technique exploited in the study of programming languages. Types allow to obtain relevant information on the behaviours of programs, such as termination of the evaluation. In recent decades, a theory of linear approximation for these systems has been developed. This theory has led to modular methods that are now extensively employed in programming language semantics. Moreover, the quantitative nature of linear approximation reveals additional information that was obscured by the qualitative nature of traditional type systems, such as time complexity and resource consumption. In this talk, we will discuss the fundamentals of the theory and its key applications in the study of program behaviour.